Development, construction, and management of large-scale capital projects, such as power plants (e.g., a coal fueled power generation facility), capital ships (e.g., military shipping, cruise ships, or cargo ships), and off-shore oil platforms, requires coordination of processes and data on a scale that is orders of magnitude greater than those of smaller, common projects (e.g., building and selling a ten room house). Large-scale capital projects consequently often require a substantially more comprehensive production and management solution.
In response to this need, those skilled in the art have developed comprehensive 3D design programs (e.g., SmartPlant® Enterprise, distributed by Intergraph, Inc. of Huntsville, Ala.) that are specially configured for the rigors of such large capital projects. Among other things, this type of design program (also referred to as a “plant program”) can be implemented as a broad application suite that manages most or all phases of a large-scale capital project, from initial conception, to design, construction, handover, maintenance, management, and decommissioning.
For each design project, a data model stores information about various components of the project, and in particular inherent properties of various project components that are captured when the components are created or modified in the design. The patterns of such inherent properties are known ahead of time to the software developer. For example, the system will not permit two components to occupy the same physical volume, and a certain type of pre-programmed component (for example, a pipe) may be represented in the software as having certain physical attributes (for example, a maximum fluid flow rate) that may be customized by an end user.
It is often necessary for a user to ensure that various components of a capital project satisfy design constraints, of which there are two types: constraints on individual components, and constraints relating two or more components. It is known in the art to program CAD software to apply design constraints to individual components, and graphically indicate to the designer when such constraints are not met. Such programming is possible because constraints on individual components rely on those components' inherent properties, which are known in advance.
Validation of multi-component design constraints is, however, much more difficult. As an example, a designer may require (pursuant to a safety regulation, for example) that a valve must be reachable from a walkway such that it can be quickly and safely operated by an average-sized person in case of an emergency. This requirement places a constraint on the distance between the valve and the walkway. Such relationships are, by their nature, not inherent in the physical properties of either the valve or the walkway, and the requirements may vary based on legal jurisdiction (and are therefore subject to change at any time). Therefore, they cannot be reasonably programmed into the CAD software. A typical process plant may have thousands, or even millions of such constraints, which must be verified manually.
Compounding the problem, some projects such as power plants, by virtue of their complexity, may be designed by hundreds or thousands of individuals, or dozens or hundreds of teams working together on different aspects of the design, and each of these teams may have conflicting requirements for the components. For example, a chemical process plant may have a reaction system team, a mechanical systems team, an electrical system team, a security and safety team, and so on. If a particular component falls within the scope of work of multiple teams, a constraint synchronization problem may arise. Thus, if one team places a component according to its design constraints, a second team may reposition the component according to its own design constraints, thereby making the component defective from the perspective of the first team (which could rightfully assume that the issue had already been addressed, and might be upset to later learn otherwise). Due to such continuous ongoing modifications on components, the amount of rechecking needed for each modification is prohibitively costly. Therefore, such checks are usually done at certain stages in the modeling.